<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!-- WeakRef -->
    <script>
        // WeakRef 直接创建对象的弱引用, 
        // 该引用不会妨碍院士对象被垃圾回收机制清除
        let target = {id: 1};
        let wr = new WeakRef(target);
        // 实例方法 deref()
        // 如果原始对象存在，该方法返回原始对象
        // 如果原始对象已经被垃圾回收机制清除，该方法返回undefined
        // 弱引用对象的一大用处，就是作为缓存，未被清除时可以从缓存取值，一旦清除缓存就自动失效
        target = null;
        console.log(wr.deref()); // 未被清除, 可以从缓存提取
    </script>

    <!-- FinalizationRegistry() -->
    <script>
        // 清理器注册表功能 FinalizationRegistry()
    </script>
</body>
</html>